package com.halfsword.creativecraft.modules.interfaces;

import net.minecraft.world.level.Level;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;

/**
 * 机器模块基础接口
 * 所有机器模块都应实现此接口
 */
public interface IMachineModule {

    /**
     * 获取模块的唯一标识符
     * @return 模块ID
     */
    String getModuleId();

    /**
     * 模块的tick更新方法
     * @param level 当前世界
     * @param pos 方块位置
     * @param state 方块状态
     */
    void tick(Level level, BlockPos pos, BlockState state);

    /**
     * 模块加载时的回调
     */
    default void onLoad() {}

    /**
     * 模块卸载时的回调
     */
    default void onUnload() {}

    /**
     * 模块是否应该在客户端执行
     * @return 是否在客户端执行
     */
    default boolean shouldExecuteOnClient() {
        return false;
    }

    /**
     * 模块是否应该在服务端执行
     * @return 是否在服务端执行
     */
    default boolean shouldExecuteOnServer() {
        return true;
    }
}